package snafu.framework.objects;

import java.util.UUID;

import snafu.framework.actions.AbstractAction;
import snafu.framework.actions.AbstractReaction;
import snafu.framework.states.State;

public interface WorldObject {

	/**
	 * Return the unique id attached to this world object.
	 * 
	 * @return the id
	 */
	public UUID getId();

	/**
	 * Returns the state of this world object.
	 * 
	 * @return the state
	 */
	public State getState();

	/**
	 * Returns a reactions based on a given action.
	 * 
	 * @param action
	 *            the action to react on
	 * @return an abstract reaction, may be {@link Empty#reaction() empty}
	 */
	public AbstractReaction react(AbstractAction action);
	public String output();
}
